Índice · Programación Avanzada

Programación Avanzada

Clase 9 · Programación en Prolog: resolución, cláusulas y aplicaciones

Fecha: 22 de septiembre de 2026

Resumen de la clase

1 Contenido de la clase

Repaso: de la resolución a la demostración automática [00:00-02:35]

Se repasa la regla de resolución: si se tiene P ∨ Q y ¬Q, se concluye P (equivalente al modus ponens: si Q implica P y Q, entonces P) [00:34-00:59]. La idea es automatizar los métodos de prueba: Robinson propuso un método automático de demostración siguiendo esta regla [00:26-00:38]. En la práctica, cuando se demuestra algo se manejan negaciones y conclusiones, y los términos positivos/negativos que coinciden se eliminan [01:04-01:27].

El inconveniente: explosión combinatoria [01:31-02:10, 06:58-07:24]

El método de prueba por resolución tiene un inconveniente: la explosión combinatoria es muy grande cuando hay varias fórmulas, porque hay que probar muchas combinaciones de literales (este se va con este, este se llega con este…) [01:31-01:58, 06:58-07:24]. La solución es restringir la demostración a un subconjunto del cálculo de predicados para reducir esa explosión [02:00-02:08].

Ejemplo de resolución con predicados [02:35-04:53]

Se muestra cómo aplicar la resolución a un conjunto de cláusulas con predicados, por ejemplo R(x) ∨ F(x), ¬F(x) ∨ T(x) (donde R, F y T son predicados como "estudia", "trabaja", "va al cine") [02:47-03:29]. La idea es demostrar una conclusión: se niega la meta, se agrega al conjunto y se aplica la resolución hasta llegar a la cláusula vacía (contradicción); si se llega a la vacía, la meta se sigue de las premisas [03:27-04:44]. En la práctica se niega la meta y se van cancelando los literales opuestos (no F con F, no R con R, etc.) hasta llegar a la contradicción [04:16-04:44].

Prolog: el lenguaje de la programación lógica [06:44-09:32]

Después de la resolución se presenta Prolog. Se mencionan varias versiones e implementaciones del lenguaje: SWI-Prolog, Visual Prolog y GNU Prolog [Nota 9, págs. 1-3]. Prolog es un lenguaje interpretado que internamente ejecuta la resolución: recibe las cláusulas y busca la contradicción para decidir si la meta se sigue [09:00-09:16]. Los predicados sirven para representar conocimiento (relaciones entre personas, cosas, etc.) y se trabaja con ellos mediante la resolución [09:25-09:32].

Unificación y sustitución, el corte y las listas [Nota 9, págs. 4-5]

En Prolog se trabaja con unificación y sustitución (igualar términos, por ejemplo al pasar argumentos) y con el corte (!), que controla el backtracking [Nota 9, pág. 4]. También se manejan listas: una lista es una secuencia de términos o listas separados por comas y delimitados por corchetes; el orden importa. Notaciones: [X | Xs] (primer elemento X y resto Xs), [X, Y | Xs], [] (lista vacía), [X] (un solo elemento) [Nota 9, pág. 5]. [parte no entendida — el detalle de los programas de ejemplo mencionados en clase].

Aplicaciones de Prolog [Nota 9, págs. 6-7]

Aplicaciones típicas de Prolog en inteligencia artificial: dibujar una figura geométrica de un solo trazo sin levantar el lápiz (problema clásico), representación de conocimiento, deducción lógica (probar la veracidad de un argumento), el problema de la Zebra, y la derivada de funciones (manejo de expresiones simbólicas en Prolog) [Nota 9, págs. 6-7]. [parte no entendida — el detalle de la motivación sobre lenguajes declarativos frente a imperativos].

2 Puntos destacados / Lo que hay que saber

La resolución es la regla de inferencia de Robinson para la demostración automática: de P ∨ Q y ¬Q se concluye P [00:34-00:59].
El método tiene explosión combinatoria cuando hay muchas fórmulas; se restringe a cláusulas de Horn para reducirlo [01:31-02:08].
Para demostrar una meta se la niega, se agrega al conjunto y se aplica la resolución hasta llegar a la cláusula vacía (contradicción) [03:27-04:44].
Prolog es el lenguaje representativo de la programación lógica; es interpretado y ejecuta internamente la resolución [09:00-09:16].
Entornos: SWI-Prolog, Visual Prolog, GNU Prolog [Nota 9, págs. 1-3].
En Prolog: unificación y sustitución, el corte (!) y las listas ([X|Xs], [X,Y|Xs], [], [X]) [Nota 9, págs. 4-5].
Aplicaciones: figura de un solo trazo, representación de conocimiento, deducción lógica, problema de la Zebra, derivada de funciones [Nota 9, págs. 6-7].

3 Actividades y tareas pendientes

4 Dudas que podrían examinar

¿Qué es la resolución?

Regla de inferencia de Robinson para la demostración automática: de P ∨ Q y ¬Q se concluye P; se usa para deducir metas en lógica de primer orden [00:34-00:59].

¿Por qué la resolución tiene explosión combinatoria?

Porque con varias fórmulas hay que probar muchas combinaciones de literales para encontrar la contradicción [01:31-01:58, 06:58-07:24].

¿Cómo se demuestra una meta con resolución?

Se niega la meta, se agrega al conjunto y se aplica la resolución hasta llegar a la cláusula vacía (contradicción); entonces la meta se sigue de las premisas [03:27-04:44].

¿Qué es una cláusula de Horn?

Una cláusula con a lo sumo una literal no negada; restringirse a ellas reduce la explosión combinatoria y es con las que trabaja Prolog [02:00-02:08].

¿Qué es la unificación en Prolog?

El proceso de igualar términos al hacer una llamada o sustitución de variables [Nota 9, pág. 4].

¿Qué es el corte `!` en Prolog?

Un operador que controla el backtracking, impidiendo que se prueben más alternativas [Nota 9, pág. 4].

¿Cómo se representan las listas en Prolog?

Con corchetes: [X|Xs] (primer elemento X y resto Xs), [X,Y|Xs], [] (vacía) y [X] (un elemento) [Nota 9, pág. 5].

5 Sitios o recursos para visitar

SWI-Prolog
El entorno Prolog de referencia, mencionado en clase. · swi-prolog.org
Visual Prolog
Implementación comercial de Prolog. · visual-prolog.com
GNU Prolog
Implementación libre de Prolog. · gprolog.org
Prolog (Wikipedia)
El lenguaje de la programación lógica. · es.wikipedia.org
Unificación
El mecanismo de igualación de términos en lógica. · es.wikipedia.org
Resolución (lógica)
La regla de inferencia de Robinson. · es.wikipedia.org
El corte (!) en Prolog
El operador de corte y el backtracking en Prolog. · google.com

6 Glosario de términos

  • Resolución: regla de inferencia para la demostración automática en lógica de primer orden (Robinson, 1965).
  • Modus ponens: regla de inferencia: si Q implica P y Q, entonces P.
  • Explosión combinatoria: crecimiento muy grande de las combinaciones a probar en una demostración automática.
  • Cláusula de Horn: cláusula con a lo sumo una literal no negada; la base de Prolog.
  • Cláusula vacía: la contradicción que indica que una meta se sigue de las premisas.
  • Programación Lógica: paradigma que usa la lógica de primer orden como base de programación.
  • Prolog: lenguaje interpretado de programación lógica que ejecuta internamente la resolución.
  • Unificación: proceso de igualar términos (por ejemplo, al sustituir variables).
  • Sustitución: reemplazo de variables por términos al unificar.
  • Corte (`!`): operador de Prolog que controla el backtracking.
  • Lista: secuencia de términos o listas delimitada por corchetes; [X|Xs], [X,Y|Xs], [], [X].
  • Backtracking: mecanismo de Prolog que vuelve atrás para probar alternativas.
  • Predicado: relación entre términos que tiene un valor de verdad (p. ej. da(regalo, juan, maria)).
  • Representación de conocimiento: uso de hechos y reglas para modelar información en Prolog.

7 Mapa mental textual

  • Programación en Prolog: resolución, cláusulas y aplicaciones · Clase 9
    • Resolución
      • Regla de Robinson: P ∨ Q y ¬QP
      • Demostración automática: negar la meta → aplicar resolución → cláusula vacía
      • Inconveniente: explosión combinatoria → restricción a cláusulas de Horn
    • Prolog
      • Lenguaje interpretado de programación lógica
      • Entornos: SWI-Prolog, Visual Prolog, GNU Prolog
      • Unificación y sustitución · el corte ! · backtracking
      • Listas: [X|Xs], [X,Y|Xs], [], [X]
    • Aplicaciones de Prolog
      • Figura de un solo trazo
      • Representación de conocimiento
      • Deducción lógica (probar argumentos)
      • Problema de la Zebra
      • Derivada de funciones (expresiones simbólicas)

Notas de estudio